﻿using clasesBase;
using Logica;
using System.Collections.Generic;
using System.Windows.Forms;
using accesoDatos;

namespace PlanificacionProduccion
{
    public partial class FrmMateriaPrimaBusq : FrmBusquedas
    {
        string[] columnasMostrar = new string[] { "Id", "Nombre", "Descripción" };
        string tablaBDconsulta = MateriaPrima.tablaBD;
        string nombreColID = "id";

        public FrmMateriaPrimaBusq()
        {
            InitializeComponent();
        }

        private void btnTodos_Click_1(object sender, System.EventArgs e)
        {
            base.btnTodos_Click(sender, e);
        }

        private void form_Load(object sender, System.EventArgs e)
        {
            base.PermitirExportar = Program.PermitirExportar;
            base.establecerValoresFormulario(this.tablaBDconsulta, this.nombreColID, this.columnasMostrar);
            base.obtenerDatos();
        }

        private void btnBuscar_Click(object sender, System.EventArgs e)
        {
            // Creo las listas que contendrán los filtros variables
            List<string> colColumnas = new List<string>(), colValores = new List<string>();
            List<char> colTiposDatos = new List<char>();

            // Obtengo los filtros ingresados por el usuario
            string id = txtId.Text.Trim(), nombre = txtNombre.Text.Trim();

            if (id != "")
            {
                colColumnas.Add("id");
                colValores.Add(id);
                colTiposDatos.Add(TipoDatoColumna.NUMERICO);
            }

            if (nombre != "")
            {
                colColumnas.Add("nombre");
                colValores.Add(nombre);
                colTiposDatos.Add(TipoDatoColumna.CADENA);
            }

            // Establezco los arreglos para el filtrado, de acuerdo a lo obtenido
            columnasFiltro = colColumnas.ToArray();
            valoresFiltro = colValores.ToArray();
            tiposDeDatos = colTiposDatos.ToArray();

            // Llamo al método padre, encargado de realizar los filtros
            base.btnFiltros_Click(sender, e);
        }

        protected override void grilla_DoubleClick(object sender, System.EventArgs e)
        {
            if (grilla.Rows.Count > 0) this.btnABM_Click(null, e);
        }

        private void btnABM_Click(object sender, System.EventArgs e)
        {
            bool soloVisualizar = false;
            if (sender == null) soloVisualizar = true;
            base.abrirFormDetalle<FrmMateriaPrimaDet>(sender, soloVisualizar);
        }

        private void btnBorrar_Click(object sender, System.EventArgs e)
        {
            if (Notificador.accionBorrarConfirmada())
            {
                int idElemento = base.obtenerIdSeleccionado();
                if (idElemento != 0)
                {
                    MateriaPrima elem = new MateriaPrima();
                    elem.ID = idElemento;

                    string error = elem.borrarElemento();
                    Notificador.resultadoABM(TipoOperacionABM.BAJA, error);
                    if (error.Trim() == "") base.obtenerDatos();
                }
            }
        }

        private void txtId_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validador.soloEnteros_KeyPress(sender, e);
        }
    }
}
